package cn.edu.scau.cmi.maintain.controller;

import java.io.File;
import java.util.Calendar;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import cn.edu.scau.cmi.ema.controller.base.CmiEmaController;
import cn.edu.scau.cmi.ema.domain.Crawlerfile;
import cn.edu.scau.cmi.ema.domain.Site;
import cn.edu.scau.cmi.ema.domain.Url;
import cn.edu.scau.cmi.ema.service.base.EntityFactoryService;
import cn.edu.scau.cmi.ema.util.CmiSetUtil;
import cn.edu.scau.cmi.ema.util.CmiTimeUtil;

/*
 * 由于junit运行在maven碰到了一些异常，暂时不适用测试的方式运行，采用controller的方式运行。
	public class EventImportMaintainController extends CmiTestCase {
*/

@Controller
public class MaintainDetectImportController extends CmiEmaController{
	
	@Autowired
	protected EntityFactoryService entityFactory;
	
	
	private String toImportExcelDirectoryName;
	private String nonImportDirectoryName;
	private String baseDirectory = "E:/Workspace/git/ema/ema/项目文档/爬虫爬取的数据/";
	
	private String[] addresses = {"深圳市", "重庆市", "西安市", "江苏省"}; 

	/**
	 * 利用测试更新deteceStandard的path和文件名, 知识库需要有文档，也能让用户下载查看，本类主要是将知识库的内容初始化到数据库中。 (1)
	 * 检查图片数据，如果在图片目录中有该图片， 知识库文件命名规范：
	 * 
	 * @throws Exception
	 * 
	 */

	/**
	 * 目前导入失败的部分没有回滚 运行前要到applicationContext4DAO修改transactionTimeout，
	 * 把数值调大，否则程序会运行时由于事务终止而无法操作数据库
	 * 
	 * @throws Exception
	 */
//	@Test
	public void importLidanExcel() throws Exception {

		// 导入李丹数据，需要修改importLiDan()里面的nonAdapterPath，importLiDanExcel()里面的siteName
		
		
		
		String sourceDataDirectory="项目文档/静态适配数据";
		String notImportDirectory="nonImportDirectoryName";//将爬取初始状态的数据放入到这个目录中
		
		File zhangXinLianDataFile = new File("（5）静态适配数据-张星联.xlsx");
		
//		Site site = CmiSetUtil.getSoleInstance(siteDAO.findSiteByName("中国农业科学院农业质量标准与检测技术研究所"));
				
		Crawlerfile uri = new Crawlerfile();
		String samr = null;
//		lidanExcelImportService.importEvent(uri);
	}
	
	@RequestMapping(value = "/selectImportDetectXls", method = RequestMethod.GET)
	public ModelAndView selectImportDetectXls() {
		ModelAndView mav = new ModelAndView();
		
		Map<String, String[]> cityExcelsMap = new LinkedHashMap<String, String[]>();
		
		for(String address : addresses) {
			addExcelFiles(baseDirectory, cityExcelsMap, address);
		}
		
		mav.addObject("cityExcelsMap", cityExcelsMap);
		mav.setViewName("adapter/selectImportXls.jsp");
		return mav;
}

	private void addExcelFiles(String baseDirectory, Map<String, String[]> cityExcelsMap, String cityName) {
		File cityFileDir = new File(baseDirectory + "待处理/" + cityName + "/不合格检测");
		//先清空一下原来的数据，因为重定向到这个地方，如果不清空，就会把已经删除的文件也保存着。
		String[] files = {};
		files = cityFileDir.list();
		cityExcelsMap.put(cityName, files);
	}
	
	
//	导入不合格的检测数据到event.
	@Transactional(timeout = 300000000)
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String importUnqualifyCheckXlsTntoEvent() throws Exception {

//		Site site = CmiSetUtil.getSoleInstance(siteDAO.findSiteByName("深圳市市场监督管理局"));
		Crawlerfile excel = new Crawlerfile();
		
		toImportExcelDirectoryName="E:/Workspace/git/ema/ema/项目文档/爬虫爬取的数据/待处理/深圳/不合格检测";
		nonImportDirectoryName="E:/Workspace/git/ema/ema/项目文档/爬虫爬取的数据/未处理/深圳/不合格检测";//将爬取初始状态的数据放入到这个目录中
		
//		（2）迭代所有的文件
		String[] subfix = {"xlsx", "xls"};
		//		迭代所有的文档
		Iterator<File> fileIterators = FileUtils.iterateFiles(new File(toImportExcelDirectoryName), subfix, false);
		while(fileIterators.hasNext()) {
			File file = fileIterators.next();
			System.out.println("\n\n\n\n\n准备处理的文件是：" + file.getName());
			
//			shenzhenAMRImportService.importEvent(excel);
		}
		
//		测试单个的文件，String toImportExcelDirectoryName="项目文档/静态适配数据";
//		File shenzhenDataFile = new File("深圳市市场监督管理局2019年食品安全抽样检验情况通报（春节特别版）_附件1：抽检不合格信息.xlsx");
//		shenzhenAMRImportService.importExcel(site, toImportExcelDirectoryName, nonImportDirectoryName, shenzhenDataFile, timeStamp);
		
		return "OK";
		
	}
}